﻿namespace eg_074_静态类型与成员
{
    /* 
     * 静态类不能被实例化，其成员也必须是静态类型。
     * 访问静态类的成员，只能使用 类名.成员 的方式
     * 静态成员也可以使用在非静态类中，
     * 其实例是全局唯一的。
     * 静态类可以用作只对输入参数进行操作并且不必获取或设置任何内部实例字段的方法集的方便容器。
     */
    class Car
    {
        public static int Number { get; private set; }  // 统计生产数量
        public Car() { Number++; }  // 构造函数
    }

    static class CarFactory
    {
        static Random R = new Random();
        public static Car[] Manufacture()
        {
            Car[] cars = new Car[R.Next(100, 300)];
            for (int i = 0; i < cars.Length; i++)
            {
                cars[i] = new Car();
            }
            return cars;
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            Car[] cars1 = CarFactory.Manufacture();
            Console.WriteLine("工厂第一季度生产汽车{0}辆", cars1.Length);
            Car[] cars2 = CarFactory.Manufacture();
            Console.WriteLine("工厂第二季度生产汽车{0}辆", cars2.Length);
            Car[] cars3 = CarFactory.Manufacture();
            Console.WriteLine("工厂第三季度生产汽车{0}辆", cars3.Length);
            Car[] cars4 = CarFactory.Manufacture();
            Console.WriteLine("工厂第四季度生产汽车{0}辆", cars4.Length);
            Console.WriteLine("工厂全年生产汽车{0}辆", Car.Number);
        }
    }
}